package com.syswin.lhztest.util;

/**
 * @author:lhz
 * @date:2019/1/14 17:23
 */

import io.netty.util.internal.StringUtil;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternUtils {
//	static String matcherStr ="开.{1,3}票.{0,3}||開||發票||可.{1,3}开.{1,3}票.{1,3}据||代.{1,3}开.{1,3}发.{1,3}票||開||银.{1,3}行.{1,3}卡||：加微信：||扣扣[0-9]||企.业||各类发-票 加||正规发-票||《营 改 增》||加Q:||众里寻她千百度||那人却在灯火阑珊处||全国通用机||与★||全国各地各||禾兑||扣扣||张三||李四||开 发 漂||免.费||奢.侈||发-漂||加Q细聊||q聊||业务加Q||（漂）||有<发||(漂)||髮◇||◆票||发票，验证||开★||★票||開★||出售各种||代幵||扣扣：||税嘌||QQ：||请加QQ||①平安易贷全国||正-规||材料||作帐||发票||正规||税票||代开||劳动||劳／动||QQ.{0,6}电||QQ.{0,10}票||^Greetings !||^Greetings!||^My Greetings||加微信[a-z0-9]{1,15}$||1[3-8][0-9]{8}[1-9]Q.{0,2}[0-9]{6,14}$||代理稅据[a-zA-Z]||開.{1,4}票.{1,4}据||(?:漂|票).{1,6}据.{1,6}代||票.{1,6}代.{1,6}(?:理|開)||代.{1,6}开.{1,6}票||開.{1,4}發.{1,4}票||本.{1,4}公.{1,4}司.{1,4}可||正.{1,8}规.{1,8}(?:税|發|发).{1,8}票||漂.{1,3}据||有.{1,6}发.{1,6}票.{1,6}代||小姐.{1,30}发.{1,30}开.{1,30}Q.{1,30}电||先生.{1,30}发.{1,30}开.{1,30}Q.{1,30}电||代-.{0,6}开||做账.{0,4}报销||开.{0,6}发.{0,6}嘌||电.{0,6}销.{0,6}短||有各种.{0,15}代开||开 Q.{0,30}电||手机.{0,30}经理||代.{0,6}开.{0,6}漂||帐.{0,6}開.{0,6}發||开.{0,6}髮.{0,6}票||经理.{0,6}QQ||代开.{0,6}请电||正规.{3,7}代开||先生.{0,9}QQ||小姐.{0,30}QQ||办.{0,9}理.{0,9}票.{0,9}据||代开.{1,9}发.{1,10}票||专业.{0,4}QQ||代开.{0,30}小姐||欢迎来电.{0,30}小姐||(?:发|發|髪)(?:嘌|漂)||全国||全国.{0,30}票";

	static String matcherStr2 = "^开.{1,3}票.{0,3}||開||發票||可.{1,3}开.{1,3}票.{1,3}据||代.{1,3}开.{1,3}发.{1,3}票||開||银.{1,3}行.{1,3}卡||：加微信：||扣扣[0-9]||企.业||各类发-票 加||正规发-票||《营 改 增》||加Q:||众里寻她千百度||那人却在灯火阑珊处||全国通用机||与★||全国各地各||禾兑||扣扣||张三||李四||开 发 漂||免.费||奢.侈||发-漂||加Q细聊||q聊||业务加Q||（漂）||有<发||(漂)||髮◇||◆票||发票，验证||开★||★票||開★||出售各种||代幵||扣扣：||税嘌||QQ：||请加QQ||①平安易贷全国||正-规||材料||作帐||发票||正规||税票||代开||劳动||劳／动||QQ.{0,6}电||QQ.{0,10}票||^Greetings !||^Greetings!||^My Greetings||加微信[a-z0-9]{1,15}$||1[3-8][0-9]{8}[1-9]Q.{0,2}[0-9]{6,14}$||代理稅据[a-zA-Z]||開.{1,4}票.{1,4}据||(?:漂|票).{1,6}据.{1,6}代||票.{1,6}代.{1,6}(?:理|開)||代.{1,6}开.{1,6}票||開.{1,4}發.{1,4}票||本.{1,4}公.{1,4}司.{1,4}可||正.{1,8}规.{1,8}(?:税|發|发).{1,8}票||漂.{1,3}据||有.{1,6}发.{1,6}票.{1,6}代||小姐.{1,30}发.{1,30}开.{1,30}Q.{1,30}电||先生.{1,30}发.{1,30}开.{1,30}Q.{1,30}电||代-.{0,6}开||做账.{0,4}报销||开.{0,6}发.{0,6}嘌||电.{0,6}销.{0,6}短||有各种.{0,15}代开||开 Q.{0,30}电||手机.{0,30}经理||代.{0,6}开.{0,6}漂||帐.{0,6}開.{0,6}發||开.{0,6}髮.{0,6}票||经理.{0,6}QQ||代开.{0,6}请电||正规.{3,7}代开||先生.{0,9}QQ||小姐.{0,30}QQ||办.{0,9}理.{0,9}票.{0,9}据||代开.{1,9}发.{1,10}票||专业.{0,4}QQ||代开.{0,30}小姐||欢迎来电.{0,30}小姐||(?:发|發|髪)(?:嘌|漂)||全国||全国.{0,30}票";

	/**
	 *  正则表达式匹配两个指定字符串中间的内容
	 *   @param soap
	 *   @return
	 *     
	 */


	public static List<String> getSubUtil(String soap) {
		List<String> list = new ArrayList<String>();
		Pattern pattern = Pattern.compile(matcherStr2);// 匹配的模式
		Matcher m = pattern.matcher(soap);
		int i = 0;
		while (m.find()) {

//			if (!StringUtils.isEmpty(m.group(0))) {
			list.add(m.group(0));
//			}
			i++;
		}
		return list;
	}

	/**
	 * 删除Html标签
	 *
	 * @param inputString
	 * @return
	 */
	public static String removeHtmlTag(String inputString) {
		if (StringUtil.isNullOrEmpty(inputString))
			return inputString;
		String htmlStr = inputString; // 含html标签的字符串
		String textStr = "";
		java.util.regex.Pattern p_script;
		java.util.regex.Matcher m_script;
		java.util.regex.Pattern p_style;
		java.util.regex.Matcher m_style;
		java.util.regex.Pattern p_html;
		java.util.regex.Matcher m_html;
		java.util.regex.Pattern p_special;
		java.util.regex.Matcher m_special;
		try {
//定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
			String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";
//定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
			String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";
// 定义HTML标签的正则表达式
			String regEx_html = "<[^>]+>";
// 定义一些特殊字符的正则表达式 如：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			String regEx_special = "\\&[a-zA-Z]{1,10};";

			p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
			m_script = p_script.matcher(htmlStr);
			htmlStr = m_script.replaceAll(""); // 过滤script标签
			p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
			m_style = p_style.matcher(htmlStr);
			htmlStr = m_style.replaceAll(""); // 过滤style标签
			p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
			m_html = p_html.matcher(htmlStr);
			htmlStr = m_html.replaceAll(""); // 过滤html标签
			p_special = Pattern.compile(regEx_special, Pattern.CASE_INSENSITIVE);
			m_special = p_special.matcher(htmlStr);
			htmlStr = m_special.replaceAll(""); // 过滤特殊标签
			textStr = htmlStr;
		} catch (Exception e) {
			e.printStackTrace();
		}
		textStr=textStr.replaceAll("//s*|/t|/r|/n","");
		return textStr.trim();// 返回文本字符串
	}

	/**
	 * 测试用的main函数
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
		try {
			FileReader fr = new FileReader("D:/test.html");
			BufferedReader br = new BufferedReader(fr);
			String s = "";
			while ((s = br.readLine()) != null) {
				sb.append(s);
			}
		} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String ssss = removeHtmlTag(sb.toString());
		System.out.println(ssss);
	}

	/**
	 *  测试
	 *  @param args
	 *     
	 */
//	public static void main(String[] args) {
////		String str = "如果您对《 深层挖掘EXCEL里的高级应用 》课程感兴趣，报名及咨询请联系 行政管理实操训练 ，他的电话是： 158 0191 4451 ，若下方内容无法显示，请联系 Charley";
//
//		System.out.println(getSubUtil("开票"));
//		System.out.println(getSubUtil("开饭票"));
//		System.out.println(getSubUtil("开饭饭票"));
//		System.out.println(getSubUtil("开饭饭饭票"));
//		System.out.println(getSubUtil("开aa票"));
//		System.out.println(getSubUtil("开aaa票"));
//		System.out.println(getSubUtil("开aaaa票"));
//		System.out.println(getSubUtil("开发票"));
//		System.out.println(getSubUtil("扣扣1"));
//	}

}




